#ifndef __DS18B20_H
#define __DS18B20_H

#include "reg52.h"
#include "type.h"
#include "gpio.h"
#include "uart.h"
#include "memory.h"

/***********************************************************************************************************************
DS18B20���Ŷ���
***********************************************************************************************************************/
#define DS18B20_PIN 7
#define DS18B20_ODR P3  
#define SET_DS18B20_BUS() do{SET_Bit(DS18B20_ODR, DS18B20_PIN);}while(0)
#define CLR_DS18B20_BUS() do{CLR_Bit(DS18B20_ODR, DS18B20_PIN);}while(0)
#define GET_DS18B20_BUS() (GET_Bit(DS18B20_ODR, DS18B20_PIN))

/***********************************************************************************************************************
DS18B20���п���
***********************************************************************************************************************/
typedef struct _DS18B20_T
{
    INT8U  reset_result:4,
    state:4;//ds18b20��ʼ��״̬ 0�����ڳ�ʼ�    ״̬��1�����ڳ�ʼ��	        
    INT8U  read_temp_step;        
    INT16U temp;
    INT8U  delay_ms;
}DS18B20_T;

/***********************************************************************************************************************
DS18B20����״̬
***********************************************************************************************************************/
#define NONE          0
#define TEMP_CHANGING 1
#define TEMP_READING  2


/***********************************************************************************************************************
LCD1602�����ӿ�
***********************************************************************************************************************/
INT8U         ds18b20_read_byte();
void          ds18b20_write_byte(INT8U _dat);
extern void   ds18b20_init(void);
extern void   ds18b20_temp_process(void);
extern INT16U read_temp(void);

#endif
